// 入口文件
import 'package:flutter/material.dart';
// 添加系统UI样式控制
import 'package:flutter/services.dart';
// 导入page/page_home
import 'package:demo/pages/home_page.dart';
// 导入page/ImgDemo
import 'package:demo/pages/img_page.dart';
// 导入page/user_page
import 'package:demo/pages/user_page.dart';

class MainHome extends StatefulWidget {
  const MainHome({super.key});

  @override
  State<StatefulWidget> createState() {
    return _MainHome();
  }
}

class _MainHome extends State<MainHome> {
  int _currentIndex = 1;
  // 页面路由配置
  // List<Widget> listPage = [HomePage(), ImgDemo()];
  static final _pageRoutes = [
    // 首页
    HomePage(),
    // 图片
    ImgDemo(),
    // 我的
    UserPage(),
  ];

  @override
  Widget build(BuildContext context) {
    // 设置系统UI覆盖样式，根据平台选择合适的主题
    // 在iOS平台上，使用深色主题以适应iOS的视觉风格
    // 在其他平台上，使用浅色主题以提供对比度和可读性
    SystemChrome.setSystemUIOverlayStyle(
      Theme.of(context).platform == TargetPlatform.iOS
          ? SystemUiOverlayStyle.dark.copyWith(
            statusBarBrightness: Brightness.light,
            statusBarIconBrightness: Brightness.dark,
          )
          : SystemUiOverlayStyle.light,
    );
    // 创建MaterialApp
    return MaterialApp(
      title: '导航栏',
      // 是否显示debug标签
      // 默认为true，设置为false可以隐藏debug标签
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        // 页面主体内容
        body: _pageRoutes[_currentIndex],
        //  底部导航栏
        bottomNavigationBar: _buildBottomNavigationBar(),
        // 悬浮按钮
        floatingActionButton: _buildFloatingActionBox(),
        // 悬浮按钮位置
        floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      ),
    );
  }

  // 封装底部导航栏
  Widget _buildBottomNavigationBar() {
    return BottomNavigationBar(
      // 底部导航栏类型
      type: BottomNavigationBarType.fixed,
      // 当前选中项
      currentIndex: _currentIndex,
      // 点击事件
      onTap: (index) {
        _onTap(index);
      },
      // 底部导航栏主题颜色
      backgroundColor: const Color.fromARGB(255, 182, 222, 255),
      // 底部导航栏选中项颜色
      selectedItemColor: const Color.fromARGB(255, 0, 0, 0),
      // 底部导航栏项
      items: [
        BottomNavigationBarItem(
          icon: Icon(Icons.speaker_notes_outlined),
          label: '公告',
        ),
        BottomNavigationBarItem(icon: Icon(Icons.image), label: '图片'),
        BottomNavigationBarItem(icon: Icon(Icons.perm_identity), label: '我的'),
      ],
    );
  }

  // 悬浮组件
  Widget _buildFloatingActionBox() {
    return Container(
      height: 55,
      width: 70,
      // 内边距
      padding: const EdgeInsets.fromLTRB(5, 5, 5, 0),
      // 外边距
      margin: const EdgeInsets.only(top: 5),
      // 背景样式
      decoration: BoxDecoration(
        // 背景颜色
        color: const Color.fromARGB(255, 182, 222, 255),
        // color: Colors.blue,
        // 边框样式
        borderRadius: BorderRadius.circular(100),
      ),

      child: _buildFloatingActionButton(),
    );
  }

  // 悬浮按钮封装
  Widget _buildFloatingActionButton() {
    return FloatingActionButton(
      onPressed: () {
        _onFloatingActionButtonTap();
      },
      // 悬浮按钮背景样式
      backgroundColor: const Color.fromARGB(255, 182, 222, 255),
      // 移除阴影
      elevation: 0,
      // 圆角
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(100)),
      // 悬浮按钮图标
      child: const Icon(Icons.image_outlined, size: 35),
    );
  }

  // 导航栏点击事件
  void _onTap(int index) {
    // 优先校验页面索引是否越界
    if (index > _pageRoutes.length - 1) {
      // 弹出消息框提示
      showDialog(
        context: context,
        builder: (BuildContext context) {
          return AlertDialog(
            title: Text('提示'),
            content: Text('当前页面索引越界，请检查代码！'),
            actions: [
              TextButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: Text('确定'),
              ),
            ],
          );
        },
      );
      return;
    }
    setState(() {
      _currentIndex = index;
    });
  }

  // 悬浮按钮点击事件
  void _onFloatingActionButtonTap() {
    setState(() {
      _currentIndex = 1;
    });
  }
}
